Information extraction from a database

ABSTRACT

Techniques for extracting information from a database are provided. A database such as the Web is searched for occurrences of tuples of information. The occurrences of the tuples of information that were found in the database are analyzed to identify a pattern in which the tuples of information were stored. Additional tuples of information can then be extracted from the database utilizing the pattern. This process can be repeated with the additional tuples of information, if desired.

This application claims the benefit of U.S. Provisional Application No.60/123,583, filed Mar. 10, 1999, which is hereby incorporated byreference.

BACKGROUND OF THE INVENTION

The present invention relates to extracting information from a database.More specifically, the invention relates to searching for tuples ofinformation in order to identify patterns in which the tuples werestored so that additional tuples can be extracted from the database.

The Internet, and more particularly the World Wide Web (“Web”), is avast repository of information that is extremely distributed, both inthe location and manner in which the information is stored. For example,a particular type of data such as restaurant lists may be scatteredacross thousands of independent information sources (e.g., hosts) inmany different formats.

One way that this information is extracted from the Web is by individualusers that traverse (“surf”) the Web to locate information of interestand manually extract the information. It should be quite evident thatthis method is very tedious and does not easily provide a comprehensivesearch. Although multiple users can be employed to perform this manualinformation extraction, the cost for mining the desired information fromthe Web is extremely high and does not provide adequate coverage of theWeb.

There has also been considerable work on integrating a number ofinformation sources using specially coded wrappers or filters. Althoughthis work has met with some amount of success, the creation of wrapperscan be quite time consuming and thus, is usually suited for only tens,not thousands (or more) of information sources. Considering the vastsize of the Web and its continual growth, the manual creation ofwrappers does not provide an efficient mechanism for extractinginformation from a database such as the Web.

Therefore, what are needed are innovative techniques for extractinginformation from databases. Additionally, it would be desirable if therelevant information was extracted from the numerous and distributedinformation sources automatically or with very minimal humanintervention.

SUMMARY OF THE INVENTION

The present invention provides innovative techniques for extractinginformation and patterns from a database such as the Web. One can beginwith one or more tuples of information that act as the initial seed forthe search. The database (or databases) is searched for occurrences ofthe tuples and patterns are identified in which they are stored. Thesepatterns are used to extract more tuples from the database and theprocess can be repeated for the new tuples. Information can be extractedfrom a database efficiently and accurately with little or no humaninteraction. Some specific embodiments of the invention are describedbelow.

In one embodiment, the invention provides a computer implemented methodof extracting information from a database. The database is searched foroccurrences of at least one tuple of information. An occurrence of atuple of information that was found is analyzed to identify a pattern inwhich the tuple of information was stored. Additional tuples ofinformation are extracted from the database utilizing the pattern. Insome embodiments, the process is repeated until a predetermined numberof tuples are found or until no new patterns are identified.

In another embodiment, the invention provides a computer implementedmethod of extracting information from a database. The database issearched for occurrences of tuples of information. Occurrences of thetuples of information that were found are analyzed to identify a patternin which the tuples of information were stored. A pattern includes aprefix text, a middle text and suffix text, where the prefix textprecedes desired information in the tuples of information, the middletext is between desired information in the tuples of information and thesuffix text follows desired information in the tuples of information.Additional tuples of information are extracted from the databaseutilizing the pattern and the process is repeated for additional tuplesof information.

Other features and advantages of the invention will become readilyapparent upon review of the following description in association withthe accompanying drawings, where the same or similar structures aredesignated with the same reference numerals.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example of a computer system that can be utilizedto execute the software of an embodiment of the invention.

FIG. 2 illustrates a system block diagram of the computer system of FIG.1.

FIG. 3 illustrates a network of multiple computer systems such as theInternet.

FIG. 4 shows a flow chart of a process of extracting information from adatabase.

FIG. 5 shows a flow chart of another process of extracting informationfrom a database.

FIG. 6 shows a flowchart of a process of identifying a pattern fromtuples of information that have been found in a database.

FIG. 7 shows a flow chart of a process of verifying a tuple ofinformation.

FIG. 8 shows a table of initial tuples of information.

FIG. 9 shows a table of URL patterns and text patterns that wereidentified from the tuples of information in FIG. 8.

FIG. 10 shows a table of additional tuples of information that werefound utilizing the patterns of FIG. 9.

FIGS. 11A and 11B show tables of a portion of the books that were foundin this example.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

In the description that follows, the present invention will be describedin reference to embodiments that extract information and patterns fromthe Web. More specifically, the embodiments will be described inreference to utilizing tuples of information to identify patterns inwhich the tuples are stored so that additional tuples can be found.However, embodiments of the invention are not limited to any particularenvironment, application or specific implementation. Therefore, thedescription of the embodiments that follows is for purposes ofillustration and not limitation.

FIG. 1 illustrates an example of a computer system that can be used toexecute the software of an embodiment of the invention. FIG. 1 shows acomputer system 1 that includes a display 3, screen 5, cabinet 7,keyboard 9, and mouse 11. Mouse 11 can have one or more buttons forinteracting with a graphical user interface. Cabinet 7 houses a CD-ROMdrive 13, system memory and a hard drive (see FIG. 2) which can beutilized to store and retrieve software programs incorporating computercode that implements the invention, data for use with the invention, andthe like. Although CD-ROM 15 is shown as an exemplary computer readablestorage medium, other computer readable storage media including floppydisk, tape, flash memory, system memory, and hard drive can be utilized.Additionally, a data signal embodied in a carrier wave (e.g., in anetwork including the Internet) can be the computer readable storagemedium.

FIG. 2 shows a system block diagram of computer system 1 used to executethe software of an embodiment of the invention. As in FIG. 1, computersystem 1 includes monitor 3 and keyboard 9, and mouse 11. Computersystem 1 further includes subsystems such as a central processor 51,system memory 53, fixed storage 55 (e.g., hard drive), removable storage57 (e.g., CD-ROM drive), display adapter 59, sound card 61, speakers 63,and network interface 65. Other computer systems suitable for use withthe invention can include additional or fewer subsystems. For example,another computer system could include more than one processor 51 (i.e.,a multi-processor system) or a cache memory.

The system bus architecture of computer system 1 is represented byarrows 67. However, these arrows are illustrative of any interconnectionscheme serving to link the subsystems. For example, a local bus could beutilized to connect the central processor to the system memory anddisplay adapter. Computer system 1 shown in FIG. 2 is but an example ofa computer system suitable for use with the invention. Other computerarchitectures having different configurations of subsystems can also beutilized.

FIG. 3 shows a network of multiple computer systems. A network 101provides communication between multiple computer systems 1. In a widearea network such as the Internet, some of the computer systems areservers (or hosts) and provide access to resources such as informationor services to client computer systems on the network. With respect tothe Web, there are thousands of server computer systems that store theweb pages that make up the Web. The web pages typically include links inthe form of uniform resource locators (URLs) that are a link to anotherweb page, whether it is on the same server or a different one.

As described above, the Web is a distributed network of web pages.Networks of hyperlinked documents can also be present in local areanetworks (e.g., intranets). The operation of these intranets is verysimilar to the Internet except that it is not uncommon for all or amajority of the hyperlinked documents of an intranet to be stored on asingle server computer system.

In general, embodiments of the invention rely on the duality betweenpatterns and relations, which can be called Dual Iterative PatternRelation Expansion (DIPRE). Let D be a large database of unstructuredinformation such as the Web. Let R=r₁, . . . , r_(n) be the targetrelation. Every tuple t of R occurs in one or more times in D. Everysuch occurrence consists of all the fields of t, represented as strings,occurring in close proximity to each other in D (in the case of the Web,this typically means all the fields are near each other, on the same webpage).

As an example, suppose the target relation R is the set of books,(author,title) pairs, that occur on the Web. Thus, the relationR=(author,title), where r₁=author and r₂=title. We will call informationthat may satisfy the relation a “tuple” of information. Accordingly, thetuple (“Isaac Asimov”, “The Robots of Dawn”) satisfy the relation ofbooks described above. As used herein, a tuple is a set of relatedinformation.

Given a potential author and title and where they are mentioned on theWeb, a user can generally tell whether this is a legitimate book.However, it would be beneficial if a computer can automaticallydetermine if a potential match has been found and utilize matches toidentify other patterns that can then be used to find more matches.

If an approximation R′ of R is computed, the coverage is$\frac{{R^{\prime}\bigcap R}}{R}$

and the error rate is $\frac{{R^{\prime} - R}}{R^{\prime}}.$

It would be desirable to maximize coverage and minimize the error rate.However, a low error rate may be much more critical than high coverage.Given a sufficiently large database D, a recall of just 20% may beacceptable. However, an error rate over 10% would likely be useless formany applications.

With very large databases, it is very difficult, if not impossible, toactually compute R. Therefore, it can be difficult to calculate theprecise values of coverage and error rate. However, the error rate canbe estimated by having a user check random elements of R′. Coverage istypically much more difficult to estimate.

Intuitively, a pattern matches one particular format of occurrences oftuples of the target relation. Ideally the pattern is specific enoughnot to match any tuples that should not be in the relation, however, inpractice a few false positives may occur. Patterns may have variousrepresentations. For example, patterns may be defined by regularexpressions, context free grammars or any computable functions.

Let p be a pattern. Then M_(D)(p) is the set of tuples that match p in Dand |P|_(D) is the number of elements in M_(D)(p). Then coverage ofp,C_(D)(p,R)=|M_(D)(p)∩R|/|R| and the error rate of p isE_(D)(P,R)=|M_(D)(p)−R|/|M_(D)(p)|.

For a set of patterns, P=p₁, . . . , P_(k), the set of tuples that matchthe patterns can be defined as M_(D)(P)=∪_(pεP)M_(D)(p). The coverageC_(D)(P,R) and error rate E_(D)(P,R) can be extended analogously.Alternative definitions of M_(D)(P) may require a tuple to matchmultiple patterns as will be discussed in more detail below.

An important observation is that given a set of patterns P with highcoverage and low error rate, a very good approximation to R can becalculated by finding all matches to all the patterns. Thus, given agood set of patterns, a good set of tuples can be found. However, itwould be desirable to also achieve the converse property—given a goodset of tuples, a good set of patterns can be identified. Both goals canbe achieved by finding all occurrences of the tuples in D anddiscovering similarities in the occurrences. The combination of theability to find tuples from patterns and patterns from tuples providesgreat power and is the basis for one aspect of the invention.

FIG. 4 shows a flow chart of a process of extracting information from adatabase. At a step 201, a search is performed on the database foroccurrences of at least one tuple of information. An occurrence of atuple (or multiple occurrences of tuples) that was found is analyzed toidentify a pattern in which the tuple of information was stored (step203). At a step 205, additional tuples of information are extracted fromthe database utilizing the pattern that was identified.

As described, occurrences of tuples can be analyzed to identifypatterns, which can then be utilized to extract or find more tuples. Theprocess can then be repeated for the additional tuples. FIG. 5 shows aflow chart of another process of extracting information from a databasethat illustrates this iterative process.

At a step 301, tuples of information are provided as examples ofinformation that are desired. These initial tuples of informationideally satisfy the target relation and act as a seed from which moretuples of information that satisfy the target relation will be found.Thus, one starts with a small sample R′ of the target relation,R′←Sample. Typically, this sample is given by the user and can be verysmall.

The database is searched for occurrences of the tuples of information ata step 303. This can be expressed as O←FindOccurrences (R′,D). Inpractice, an occurrence is evidenced by fields of the tuples being infairly close proximity in text (e.g., the text of HyperText MarkupLanguage or HTML). In preferred embodiments, the context of everyoccurrence (e.g., URL and surrounding text) is stored along with thetuple found.

At a step 305, the occurrences of the tuples of information that werefound in the database are analyzed to identify a pattern in which thetuples of information were stored. In other words, patterns aregenerated based on the sets of occurrences of tuples, P←GenPatterns(O).Ideally, patterns should be generated for sets of occurrences withsimilar context. The patterns should to have a low error rate so it isimportant that they are not overly general. The higher the coverage ofthe patterns the better. However, a low coverage can be compensated forwith a larger database.

Additional tuples of information are extracted from the databaseutilizing the pattern at a step 307. Thus, the database is searched fortuples that match any of the identified patterns, R′←M_(D)(P). At a step309, it is determined if the process is done. If not, the flow returnsto step 303 to search for occurrences of the additional tuples ofinformation in the database. The test for whether the process is donecan vary in different embodiments. In one embodiment, if R′ is largeenough (e.g., greater than a predetermined number), then the process isdone.

The above process is not necessarily very stable and may stray away fromR. In particular, several erroneous or bogus tuples in M_(D)(P) can leadto several erroneous patterns in P in the next iteration. This in turncan cause a whole slew of erroneous tuples. For this reason, theGenPatterns routine should be careful to minimize the amount of damagecaused by a potentially erroneous tuple (or several small tuples).Another measure of safety is to define M_(D)(P) more stringently so asto require tuples to match multiple patterns in P. Although notnecessary, the results may improve if tuples are verified morestringently. Finally, the various thresholds may need to fluctuate asthe relation expands.

In one embodiment, the patterns that are identified in step 305 areevaluated according to a criteria (e.g., the number of tuples that matcheach pattern, the specificity of each pattern, and the like). Thepatterns with the highest evaluation, whether being a predeterminednumber of patterns, those over a threshold or any other selectionmechanism, are processed further. In a similar manner, the tuples ofinformation that are extracted in step 307 can be evaluated according toa criteria (e.g., the number of patterns each tuple matches) and thetuples with the highest evaluation are processed further. As mentionedabove, it may be beneficial to vary the thresholds as the relationexpands.

FIG. 6 shows a flow chart of a process of verifying a tuple ofinformation that can be performed when additional tuples are extractedfrom the database utilizing a pattern. At a step 401, the tuple ofinformation that was found utilizing a pattern is checked to see howmany patterns the tuple matches. If, at a step 403, the tuple does notmatch at least the predetermined number of patterns (e.g., more than 1),the tuple is rejected at step 405. Otherwise, the tuple can be acceptedat a step 407.

In order to more clearly describe the invention, it may be beneficial tonow describe a specific experiment utilizing an embodiment of theinvention. In the experiment, it is desired to extract from the Webtuples that satisfy a relation (author,title). In other words, a userwould like to extract the authors and titles of books on the Web. Thisproblem lends itself particularly well to the invention because thereare a number of well-known books that are listed on may web sites. Manyof the web sites conform to a reasonably uniform format across the site.

A pattern is a template for finding additional tuples of informationthat may satisfy the desired information. A pattern typically needs tobe lexically defined because it will be utilized to find the desiredinformation on the books. The lexical definition of a pattern canlargely determine how successful the information extraction will be.However, even a very simple lexical definition of a pattern that will beused for this example can generate excellent results. More sophisticatedlexical definitions of patterns may provide better results.

In this example, a pattern is a five-tuple of (order, urlprefix, prefix,middle, suffix), where order is a Boolean value and the other attributesare strings. If order is true, the pattern is for an author followed bya title. Otherwise, if order is false, the title precedes the author.

An (author,title) pair matches the pattern if there is a document in thecollection (e.g., the Web) with a URL that matches urlprefix* and whichcontains text that matches the regular expression: *prefix, author,middle, title, suffix*. It should be understood that prefix is text thatprecedes desired information in the tuples of information, middle istext between desired information tuples of information and suffix istext that follows desired information tuples of information. With thissimple example, there is only one middle, but the invention can beadvantageously applied to extracting information with more than twofields and the number of middle texts in the patterns can be similarlyincreased.

In the experiment, the author was restricted to[A-Z][A-Za-z.,&]^(5,30)[A-Za-z.] and the title was restricted to[A-Z0-9][A-Za-z0-9 .,:'#!?;&]^(4,45)[A-Za-z0-9?!]. These express simplydefine the strings of characters that will be allowed to make up anauthor and title, respectively, and will be utilized during a lexicalsearch of the Web for tuples of information. In other embodiments, theexpressions can be varied accordingly.

An occurrence can be lexically defined in correspondence to thedefinition of a pattern. An occurrence of an (author,title) pair canconsist of a seven-tuple: (author,title, order, url, prefix, middle,suffix). The order corresponds to the order the author and titleoccurred in the text. The url is the URL of the document in which thethey occurred. The prefix includes the m characters (e.g., 10) precedingthe author (or title if the title was first). The middle is the textbetween the author and the title. Lastly, the suffix includes the mcharacters following the tile (or author). In other embodiments, theprefix and suffix can be different lengths. Additionally, the prefix andsuffix can be less than m characters if the line ends or starts close tothe occurrence.

Now that examples of patterns and occurrences have been described, aprocess of generating patterns, GenPatterns(O), will be described.Initially, all occurrences o in O are grouped by order and middle. Inother words, in each group, the values for the fields' order and middleare the same. The resulting groups shall be designated O₁, . . . ,O_(k). The occurrences in each group can then be analyzed to identify apattern as follows.

FIG. 7 shows a flow chart of a process of identifying a pattern inmultiple occurrences. At a step 501, the order and middle text arechecked to verify that they are the same between or among theoccurrences. If they are determined to not be the same at a step 503,then no pattern is identified at a step 505. It is nearly impossible togenerate a pattern to match all the occurrences if the order and middletext are not the same. If the groups have been assembled accordingly tothe same order and middle text, steps 501, 503 and 505 may not benecessary. The order and middle fields of the pattern can be setaccording to the group. As with any of the flow charts herein, steps canbe added, deleted, combined, and reordered without departing from thespirit and scope of the invention.

At a step 507, the longest matching URL prefix of the occurrences in thegroup is set to the field urlprefix of the pattern. The longest matchingprefix text of the occurrences in the group is set to the field prefixat a step 509. At a step 511, the longest matching suffix text of theoccurrences in the group is set to the field suffix.

The specificity of the pattern can be checked at a step 513. A patterngenerated like the above can be too general or too specific. In general,it is not a concern to be too specific since there will be many patternsgenerated and combined there will be many books. However, if the patternis too general, many nonbooks may be found.

In order to increase the accuracy, the specificity of the pattern ismeasured. The specificity of a pattern p can roughly correspondto—log(P(XεM_(D)(p))) where X is some random variable distributeduniformly over the domain of tuples of R. If the domain is infinite likethe space of all strings, the uniform distribution may not be sensibleand a different distribution should probably be used.

For quick computation, specificity of a pattern (|s| denotes the lengthof s) can be calculated by the following:specificity(p)=|p.middle∥p.urlprefix∥p.prefix∥p.suffix|. In other words,the specificity of the pattern is determined by the product of thelengths of the strings that make up the pattern. This ensures that allthe strings of a pattern are nonempty (otherwise the specificity iszero).

Patterns with too low a specificity can be rejected so that overlygeneral patterns are not generated. More specifically, patterns can onlybe accepted if their specificity(p)n>t where n is the number of bookswith occurrences supporting the pattern p and t is a threshold (e.g., apredetermined specificity). Thus, the specificity increases inproportion to the number of tuples that match the pattern. Also, n>1should be true since basing a pattern on one example is veryerror-prone. As described above, the process can be complete when apredetermined number of tuples of information are extracted.Additionally, the process can complete when there are no more patternsidentified that have a specificity greater than a predeterminedspecificity.

Returning to step 515, if the specificity is less than a predeterminedspecificity, then no pattern is identified at step 505. In a preferredembodiment, an additional check is performed. If all the occurrences inthe group do not have the same URL, then the URL prefix is shorteneduntil the group can be broken into more than one group. Each of thesenew groups can be processed by returning to step 501 and proceeding asdescribed above. Thus, a simple further subdivision based on the URL canbe used when the pattern is generated is not sufficiently specific.Additionally, the prefix and/or suffix text can be used forsubdivisions.

An important aspect of the invention is the GenPatterns routine thattakes a set of occurrences of books, in this example, and converts theminto a list of patterns. This is a nontrivial problem and there is theentire filed of pattern recognition devoted to solving the generalversion of this problem. However, a simple set of heuristics forgenerating patterns from occurrences can be utilized with excellentresults. As long as there are a few false positives (patterns thatgenerate nonbooks), this is sufficient. Each pattern need only have avery small coverage since the Web is vast and there are many sources ofinformation so the total coverage of all the patterns can still besubstantial.

With respect to performance, there are two very demanding tasks—findingoccurrences of books given a long list of books and finding patternmatches given a list of patterns. Both of these operations may takeplace over a very large database of Web documents.

For the first task of finding occurrences of books, finding occurrencesof books, the data was passed through two fgrep filters. One filter onlypassed through lines that contained a valid author and the other filteronly passed through lines that contained a valid title. After this, itis the task of a program written in Python to actually check that thereare matching authors and titles in the line, identify them and produceoccurrences as output. Several alternative approaches involving largeregular expressions in Flex and in Python were attempted for thispurpose but they quickly exceed various internal bounds.

For the second task of finding pattern matches, a Python program wasused. Every pattern was translated into a pair of regular expressions,one for the URL and one for the actual occurrence. Every URL was firsttested to see which patterns apply to it. Then the program tests everyline for the relevant regular expressions. This approach can be fairlyslow so future versions may likely to use Flex or rex C library. Thistask can be made somewhat easier by targeting just the URLs that matchthe patters. However, the data is not structured to make that completelytrivial and it would be desirable to develop techniques that are generalenough to be able to handle no restrictions on URLs.

The generation of patterns from occurrences is not much of a performanceissue with this example because there are only thousands of occurrencesgenerated. As larger extractions are performed, this will likely becomemore important. Currently, the occurrences are sorted using gsort byorder and middle. The Python program reads through the resulting listand generates the patterns.

Returning to the example of finding books by (author,title) pairs, aninitial set of five books was used as the seed. The (author,title) pairsfor these books are shown in the table in FIG. 8. For a database, arepository of 24 million web pages totaling 147 gigabytes was used. Thisdata is part of the Stanford WebBase and is used for the GOOGLE searchengine, which includes an embodiment of the invention. As a part of thesearch engine, an inverted index of the entire repository was built.

The repository spans many disks and several machines. It takes aconsiderable amount of time to make just one pass over the data evenwithout doing any substantial processing. Therefore, passes were onlymade over subsets of the repository on any given iteration. It should benoted that the repository contains almost no web pages from Amazonbecause their automatically generated URLs make crawling difficult.

A search for occurrences of tuples of information for the five books inFIG. 8 produced 199 occurrences and generated three patterns. The threepatterns are shown in a table in FIG. 9. Interestingly, only the firsttwo of the five books produced the patterns because they were bothscience fiction books. A run of these patterns over matching URLsproduced 4047 unique (author,title) pairs. These additional tuples weremostly science fiction by there were some exceptions. FIG. 10 shows asample of books that were found using the three patterns from FIG. 9.

A search through roughly 5 million web pages for the additional tuplesof information found 3972 occurrences of these books. These occurrencesproduced 105 patterns, 24 of which had URL prefixes which were notcomplete URLs. A pass over a couple million URLs produced 9369 unique(author,title) pairs. There were some erroneous books among these. Forexample, 242 of the occurrences had legitimate titles but had an authorof “Conclusion”. These occurrences were clearly erroneous so they weremanually removed, but this was the only manual intervention through thewhole process. It is not clear whether keeping the erroneous books wouldhave produced an extraordinary amount of junk.

For the final iteration, the subset of the repository that contained thework books was used, which included roughly 156,000 documents. Scanningfor the 9127 remaining books produced 9938 occurrences. Theseoccurrences in turn generated 346 patterns. Scanning over the same setof documents produced 15257 unique books with very little erroneousbooks. A portion of these books is shown in the tables of FIGS. 11A and11B.

To analyze the quality of the results, twenty books were selected atrandom out of the list to verify that they were actual books. As ameasure of the quality of the results, 19, of the 20 were all bonafidebooks. The remaining book was actually an article—“Why I Voted for aUser Car” by Andrew Tobias.

A number of the books were not found in some or all of the sourcesexcept for the Web. Some of these books were online books, some wereobscure or out of print and some simply were not listed on some sitesfor no apparent reason. It is interesting to note that in total, 5 ofthe 20 books were not on Amazon's web site, which claims to have acatalog of 2.5 million books.

Some books are mentioned several times due to small differences such ascapitalization, spacing, and how the author was listed (for example “E.R., Burroughs” versus “Edgar Rice Burroughs”). Fortunately, however,authors are quite particular about how their name is listed and theseduplications are limited. In several cases, some information wasappended to the author's name such as publication date.

It would be desirable to be able to extract structured data from theentire Web by leveraging on its vastness. Embodiments of the inventionhave proven to be a remarkable tool in the simple example of findinglists of books. It started with a sample set of five books and expandedit to a relatively high quality list of over 15,000 books with veryminimal human intervention. The same tool may be applied to a number ofother domains such as movies, music, restaurants, people directories,product catalogs, and more.

One challenge is to prevent or hinder divergence from the target as therelation is expanded. For example, since two science fiction books werein the seed sample, it is fairly surprising that the expansion did notproduce a large list of science fiction books. Clearly, the expansiongravitated to a compilation of all books and even a few scatteredarticles managed to enter the relation. Keeping this effect undercontrol as the relation expands is nontrivial but there are severalpossibilities.

One possibility is to redefine of M_(D)(P) to require multiple patternsto match a tuple. A more extreme version of this is to assign a weightto every tuple and pattern. A matching tuple is assigned a weight basedon the weights of the patterns it matches. A generated pattern isassigned a weight based on the weights of the tuples that match it. Ifthis is done linearly, this technique breaks down to a singular valuedecomposition of the tuple-pattern matrix (multiplied by its transpose).This is analogous to Latent Semantic Indexing (LSI), which is done onthe document-word matrix. In this case, the eventual steady state is thedominant eigenvector. Unfortunately, this is independent of the initialsample that is clearly not desirable. Nonetheless, the relationship toLSI is compelling and may be investigated further.

The independence of the steady state from the initial state above mayalso be a problem even without the use of weights. These are severalpossible solutions. One is to run only through a limited number ofiterations as was done in the example described herein. Another solutionis to make sure that the transformation of tuples to patterns to tuplesis nonlinear and has some local steady states, which depend on theinitial state. This can be accomplished through the use of the initialsample R′ in the computation of GenPatterns. In this case, the user mayalso provide an {overscore (R)}′, a list of counterexamples.

One of the most surprising results of the example was finding bookswhich were not listed in major online sources such as the book“Disbanded” by Douglas Clark, which is published online or “The YoungGardners' Kalendar” by Dollie Radford, which is an obscure workpublished in 1904. If the book list can be expanded and if almost allbooks listed in online sources can be extracted, the resulting list maybe more complete than any existing book database. The generated listwould be the product of thousands of small online sources as opposed tocurrent book databases, which are the products of a few largeinformation sources.

The above has described patterns to extract tuples of information thatsatisfy a relation. Multiple relations can also be analyzedsimultaneously with one relation influencing another. For example, arelation First=(first name) includes recognized first names of peopleand a relation Last=(last name) includes recognized last names ofpeople. The First and Last relations can be initialized any number ofways including utilizing the information extraction techniques describedabove. In this example, the First and Last relations are initializedwith the first and last names of a few authors. When tuples ofinformation are extracted that satisfy the relation Author=(first name,last name), a test is performed to verify that either the first name orthe last name of each tuple satisfies the relation First or Last,respectively. If one of the First or Last relations is satisfied, thetuple is accepted. The corresponding first or last name of each acceptedtuple can then be added to the appropriate relation First or Last inorder to simultaneously grow the relations. In other embodiments, therelations may not grow simultaneously, such as when one or more of therelations is initialized to a state that should remain unchanged. Itshould be noted that the relations utilized herein are fairly simple forpurposes of illustration, but the relations may include more fields inpractice.

While the above is a complete description of preferred embodiments ofthe invention, various alternatives, modifications, and equivalents canbe used. It should be evident that the invention is equally applicableby making appropriate modifications to the embodiments described above.Therefore, the above description should not be taken as limiting thescope of the invention that is defined by the metes and bounds of theappended claims along with their full scope of equivalents.

What is claimed is:
 1. A computer implemented method of extracting information from a database, comprising: searching the database for occurrences of at least one tuple of information; analyzing an occurrence of a tuple of information that was found in the database to identify a pattern in which the tuple of information was stored; and extracting additional tuples of information from the database utilizing the pattern.
 2. The method of claim 1, further comprising providing the at least one tuple of information as an example of information that is desired.
 3. The method of claim 1, further comprising repeating the searching, analyzing and extracting for additional tuples of information.
 4. The method of claim 3, wherein the repeating the searching, analyzing and extracting for the additional tuples of information continues until a predetermined number of tuples of information are extracted.
 5. The method of claim 1, wherein the pattern is defined by a regular expression, context free grammar or computable function.
 6. The method of claim 1, wherein the pattern includes a middle text, where the middle text is between desired information in the tuples of information.
 7. The method of claim 1, wherein the pattern includes a prefix text and suffix text, where the prefix text precedes desired information in the tuples of information and the suffix text follows desired information in the tuples of information.
 8. The method of claim 1, wherein the pattern includes an order of the information in each tuple of information.
 9. The method of claim 1, wherein the pattern includes a URL prefix, where the URL prefix is the initial portion of the URL where the pattern was identified.
 10. The method of claim 1, further comprising verifying if an additional tuple of information matches a predetermined number of patterns, wherein the predetermined number of patterns is greater than
 1. 11. The method of claim 10, wherein the additional tuple is rejected if it does not match at least the predetermined number of patterns.
 12. The method of claim 1, further comprising verifying if the pattern has a specificity less than a predetermined specificity.
 13. The method of claim 12, wherein the pattern is rejected if the specificity is less than the predetermined specificity.
 14. The method of claim 12, further comprising repeating the searching, analyzing and extracting for additional tuples of information, wherein the searching, analyzing and extracting for the additional tuples of information continues until no more patterns are identified that have a specificity greater than the predetermined specificity.
 15. The method of claim 12, further comprising calculating the specificity by multiplying text string lengths of components of the pattern.
 16. The method of claim 12, wherein the specificity increases in proportion to the number of tuples of information that match the pattern.
 17. The method of claim 1, wherein the database is the World Wide Web.
 18. A computer program product for extracting information from a database, comprising: computer code that searches the database for occurrences of at least one tuple of information; computer code that analyzes an occurrence of a tuple of information that was found in the database to identify a pattern in which the tuple of information was stored; computer code that extracts additional tuples of information from the database utilizing the pattern; and a computer readable medium that stores the computer codes.
 19. The computer program product of claim 18, wherein the computer readable medium is a CD-ROM, floppy disk, tape, flash memory, system memory, hard drive, or data signal embodied in a carrier wave.
 20. A computer implemented method of extracting information from a database, comprising: searching the database for occurrences of tuples of information; analyzing the occurrences of the tuples of information that were found in the database to identify a pattern in which the tuples of information were stored, wherein a pattern includes a prefix text, a middle text and suffix text, where the prefix text precedes desired information in the tuples of information, the middle text is between desired information in the tuples of information and the suffix text follows desired information in the tuples of information; extracting additional tuples of information from the database utilizing the pattern; and repeating the searching, analyzing and extracting for additional tuples of information.
 21. The method of claim 20, further comprising providing the tuples of information as examples of information that are desired.
 22. The method of claim 20, wherein the repeating of the searching, analyzing and extracting for the additional tuples of information continues until a predetermined number of tuples of information are extracted.
 23. The method of claim 20, wherein the pattern includes an order of the information in the tuples of information.
 24. The method of claim 20, wherein the pattern includes a URL prefix, where the URL prefix is the initial portion of the URL where the pattern was identified.
 25. The method of claim 20, further comprising verifying if an additional tuple of information matches a predetermined number of patterns, wherein the predetermined number of patterns is greater than
 1. 26. The method of claim 20, further comprising verifying if the pattern has a specificity less than a predetermined specificity.
 27. The method of claim 25, wherein the additional tuple is rejected if it does not match at least the predetermined number of patterns.
 28. The method of claim 26, wherein the pattern is rejected if the specificity is less than the predetermined specificity.
 29. The method of claim 26, further comprising repeating the searching, analyzing and extracting for additional tuples of information, wherein the searching, analyzing and extracting for the additional tuples of information continues until no more patterns are identified that have a specificity greater than the predetermined specificity.
 30. The method of claim 26, further comprising calculating the specificity by multiplying text string lengths of components of the pattern.
 31. The method of claim 26, wherein the specificity increases in proportion to the number of tuples of information that match the pattern.
 32. The method of claim 20, wherein the database is the World Wide Web.
 33. A computer program product for extracting information from a database, comprising: computer code that searches the database for occurrences of tuples of information; computer code that analyzes the occurrence of tuples of information that were found in the database to identify a pattern in which the tuples of information were stored, wherein a pattern includes a prefix text, a middle text and suffix text, where the prefix text precedes desired information in the tuples of information, the middle text is between desired information in the tuples of information and the suffix text follows desired information in the tuples of information; computer code that extracts additional tuples of information from the database utilizing the pattern; computer code that repeats the searching, analyzing and extracting for additional tuples of information; and a computer readable medium that stores the computer codes.
 34. The computer program product of claim 33, wherein the computer readable medium is a CD-ROM, floppy disk, tape, flash memory, system memory, hard drive, or data signal embodied in a carrier wave. 